package cn.edu.scau.cmi.ema.dao;

import java.util.Set;

import org.springframework.dao.DataAccessException;
import cn.edu.scau.cmi.ema.domain.*;
import cn.edu.scau.cmi.ema.domain.base.CmiPagination;
import java.math.BigDecimal;
import java.util.Calendar;

public interface PurchaseadditiveDAO extends JpaDao<Purchaseadditive> {

	public Purchaseadditive findPurchaseadditiveById(Integer id) throws DataAccessException;

	public Purchaseadditive findPurchaseadditiveById(Integer id, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditiveByName(String name) throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditiveByName(String name, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditiveByNameContaining(String name_1) throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditiveByNameContaining(String name_1, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditiveByDate(Calendar date) throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditiveByDate(Calendar date, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditiveByPrice(BigDecimal price) throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditiveByPrice(BigDecimal price, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditiveByQuantity(BigDecimal quantity) throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditiveByQuantity(BigDecimal quantity, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditiveByDescription(String description) throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditiveByDescription(String description, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditiveByDescriptionContaining(String description_1)
			throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditiveByDescriptionContaining(String description_1, int startResult,
			int maxRows) throws DataAccessException;

	public Purchaseadditive findPurchaseadditiveByPrimaryKey(Integer id) throws DataAccessException;

	public Purchaseadditive findPurchaseadditiveByPrimaryKey(Integer id, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditivesByIds(Set<Integer> ids) throws DataAccessException;

	public Set<Purchaseadditive> findAllPurchaseadditives() throws DataAccessException;

	public Set<Purchaseadditive> findAllPurchaseadditives(int startResult, int maxRows) throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditivesByAdditive(Integer additiveId, int start, int max);

	public Set<Purchaseadditive> findPurchaseadditivesByProducer(Integer producerId, int start, int max);

	public Set<Purchaseadditive> findPurchaseadditivesBySupplier(Integer supplierId, int start, int max);

	public Set<Purchaseadditive> findPurchaseadditivesByUnit(Integer unitId, int start, int max);

	public Set<Purchaseadditive> findPurchaseadditiveByCompositeProperities(String sql, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Purchaseadditive> findPurchaseadditivesByDetachedCriteria(CmiPagination page) throws DataAccessException;

	public Purchaseadditive findPurchaseadditiveByPhysicalPrimaryKey(Integer producerId, Integer supplierId,
			Integer additiveId, Calendar date) throws DataAccessException;

	public Purchaseadditive findPurchaseadditiveByPhysicalPrimaryKey(Integer producerId, Integer supplierId,
			Integer additiveId, Calendar date, int startResult, int maxRows) throws DataAccessException;
}
